#pragma once

#define NOMINMAX
#ifdef max
#undef max
#endif
#ifdef min
#undef min
#endif

#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>

// polygonal mess
typedef OpenMesh::PolyMesh_ArrayKernelT<>  Mesh;
typedef OpenMesh::Vec2f                    Param;
typedef Param::value_type                  Scalar;



enum VertexType     { kTypelessVertex, kSideVertex, kWedgeVertex, kCornerVertex };
enum EdgeType       { kTypelessEdge, kSideEdge, kWedgeEdge };
enum WeightType     { kUniform, kCotangent };
//enum CubeFaceType { kPY=0, kNY, kPZ0, kPX0, kNZ0, kNX0, 
//								kPZ1, kPX1, kNZ1, kNX1, kNone, kCorner };
enum CubeFaceType {kPY=0, kNY=1, kNone=-1, kCorner=-2};

struct VertexPriority {
	Mesh::VertexHandle vh_;
		float priority;

		bool operator<(const VertexPriority& oi) const //overloaded < operator
		{
			return priority > oi.priority;
		}
			
	};